package com.heima.netty.eventloop;

import io.netty.channel.DefaultEventLoop;
import io.netty.channel.EventLoop;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.TimeUnit;

/**
 * @author ZhengDp
 * @Date 2023/6/24 19:09
 */
@Slf4j
public class TestEventLoop {
    public static void main(String[] args) {
        // io 事件，普通任务，定时任务 都可以提交
        EventLoopGroup group = new NioEventLoopGroup(2);
        // 普通任务，定时任务
        EventLoopGroup defaultGroup = new DefaultEventLoop();

        // 获取下一个事件循环对象 EventLoop  --> 轮询
        System.out.println(group.next());
        System.out.println(group.next());
        System.out.println(group.next());

        // 执行普通任务 --> EventLoop继承线程池，所以可以直接提交任务
        group.next().submit(() -> {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            log.info("ok");
        });
        // 执行定时任务
        group.next().scheduleAtFixedRate(() -> {
            log.info("OK!!");
        },0,1, TimeUnit.MINUTES);
        // 处理IO事件
        log.info("main");

    }
}
